CoreELEC Odroid C2

Odroid C2. Quad core and 2Gb of RAM.


Good Stuff:

Bad Stuff:


The standard case is not great. But it does allow access to SD card and IR. Raspberry Pi2 cases will fit the Odroid C2, but block the SD card and IR.

Third party case made of high-grade powder-coated steel.

The Odroid C2 board detail.


Skin and Config Changes

My Addons:

skin.steve2.estuary
script.steve.iptc
screensaver.steve2.slideshow

Clone Skin Estury - files Changed:

1080i/custom_PicInfo.xml
1080i/custom_VideoInfo.xml
1080i/custom_TimeLeft.xml
1080i/SlideShow.xml

Install Useful Add-Ons

.kodi/addons

script.module.elementtree
script.module.kodi-six
script.module.simplejson
service.bluetooth-audio
service.minidlna
service.multimedia.mpd
service.subtitles.opensubtitles
service.subtitles.supersubtitles
service.thoradia
service.transmission

Delete Scraper Add-Ons

.kodi/addons

metadata.artists.universal
metadata.common.fanart.tv
metadata.common.imdb.com
metadata.common.musicbrainz.org
metadata.themoviedb.org
packages

Turn off Odroid C2 Activity LED:

.config/autostart.sh

echo none > /sys/class/leds/blue\:heartbeat/trigger

My KeyMaps:

<keymap> <global> <keyboard> <!-- colour keys --> <!-- <key id="251">activatewindow(10025,"upnp://4d696e69-444c-164e-9d41-80ee73bced57/2%2415/")</key> --> <!-- videos --> <key id="251">activatewindow(10025,"smb://NAS3/video")</key> <!-- videos --> <!-- <key id="252">activatewindow(10002,"upnp://4d696e69-444c-164e-9d41-80ee73bced57/3%2416/")</key> --> <!-- pic --> <key id="252">activatewindow(10002,"smb://NAS3/pics")</key> <!-- pic --> <!-- <key id="253">activatewindow(10501,"upnp://4d696e69-444c-164e-9d41-80ee73bced57/1%2414/")</key> --> <!-- music --> <key id="253">contextmenu</key> <key id="254">contextmenu</key> <!-- favourites key --> <key id="229">activatewindow(favourites)</key> <!-- guide key --> <key id="50">activatewindow(home)</key> <!-- rec key --> <key id="250">screenshot</key> </keyboard> </global> <fullscreenvideo> <keyboard> <!-- colour keys --> <key id="251">ActivateWindow(1110)</key> <!--timeleft popup --> <key id="252">ShowTime</key> <!-- <key id="252">ActivateWindow(1102)</key> --> <!-- video info popup --> <key id="253">ActivateWindow(1112)</key> <!-- video info popup --> <key id="254">CodecInfo</key> <!-- channel up --> <key id="210">nextsubtitle</key> <!-- channel down --> <key id="211">audionextlanguage</key> <!-- rec key --> <key id="250">screenshot</key> </keyboard> </fullscreenvideo> <slideshow> <keyboard> <key id="251">RunScript(script.steve.iptc)</key> <!-- pic info popup --> <!-- <key id="251">Skin.ToggleSetting(SteveCaption)</key> --> <!-- pic info popup --> <key id="252">ActivateWindow(1113)</key> <!-- pic info popup --> <key id="253">ActivateWindow(1113)</key> <!-- pic info popup --> <key id="254">ActivateWindow(1113)</key> <!-- pic info popup --> </keyboard> </slideshow> <window1110> <keyboard> <!-- some colour keys now close the window --> <key id="251">Action(close,1110)</key> <key id="11">Action(close,1110)</key> </keyboard> </window1110> <window1112> <keyboard> <!-- some colour keys now close the window --> <key id="252">Action(close,1112)</key> <key id="253">Action(close,1112)</key> </keyboard> </window1112> <window1113> <keyboard> <!-- all colour keys now close the window --> <key id="251">Action(close,1113)</key> <key id="252">Action(close,1113)</key> <key id="253">Action(close,1113)</key> <key id="254">Action(close,1113)</key> </keyboard> </window1113> </keymap>

Source Modifications

Get The Source:

git clone https://github.com/CoreELEC/CoreELEC.tv.git

Update kernel config file on 9.2.0 for Odroid C2 to enable encryption edit the following file:

./projects/Amlogic/linux/linux.aarch64.conf

I added the following lines:

CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=y
CONFIG_MD=y
CONFIG_DM_BUFIO=m
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_MIRROR=m
CONFIG_DM_RAID=m
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
CONFIG_MD=y
CONFIG_DM_LOG_WRITES=m
CONFIG_DM_VERITY_AVB=m

Then:

PROJECT=Amlogic ./scripts/clean linux
PROJECT=Amlogic ./scripts/build linux

And finally

PROJECT=Amlogic make image

All 8 cores on the case. Took an hour or so to fully compile.

Images:

./target
	
CoreELEC-Amlogic.arm-9.2-devel-1607779278-Odroid_C2.img.gz
CoreELEC-Amlogic.arm-9.2-devel-1607779278-Odroid_C2.img.kernel
CoreELEC-Amlogic.arm-9.2-devel-1607779278-Odroid_C2.img.system
CoreELEC-Amlogic.arm-9.2-devel-1607779278-Odroid_C2.img.tar

Checks

After booting check kernel has crypt module:

Check if the dm_crypt module is available: find /lib/modules/$(uname -r) -name dm_crypt.ko


Upgrade:

Transferred to the /storage/.update 

CoreELEC-Amlogic.arm-9.2-devel-1607779278-Odroid_C2.img.gz

Custom slideshow IPTC info.

Max H.264: jellyfish-120-mbps-4k-uhd-h264.mkv

Max H.265: jellyfish-200-mbps-4k-uhd-hevc-10bit.mkv

CoreELEC:~ # cputemp
65 C
CoreELEC:~ # gputemp
65 C

All running nice and cool.


MPD Configuration

.kodi/userdata/addon_data/service.multimedia.mpd/config

HDMI via ALSA

audio_output {                                                              
        type            "alsa"                                          
        name            "ALSA Device"                                     
#       device          "hdmi:CARD=AMLM8AUDIO,DEV=0"              
        device          "hw:0,0"        # HDMI      
        format          "48000:16:2"    # Odroid only supports 48kHz            
#       buffer_time     "100"                       
} 

Bluetooth via Pulseaudio

audio_output {                                                                  
        type            "Bluetooth"                                             
        name            "My Pulse Output"                                       
        server          "localhost"             # optional                                         
} 

Radio Steve via HTTPD

audio_output {                                                                                                                                  
        type            "httpd"                                                 
        name            "Radio Steve"                                           
        encoder         "lame"          # optional, vorbis or lame              
        port            "8000"                                                  
        bind_to_address "0.0.0.0"               # optional, IPv4 or IPv6        
        quality         "5.0"                   # do not define if bitrate is de
#       bitrate         "320"                   # do not define if quality is de
        format          "44100:16:1"                                            
} 

Specs:

specs